/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Negocio.Cargador;


import Negocio.Contenedor.ListaBailarinas;
import Negocio.Contenedor.ListaCuentas;
import Negocio.Contenedor.ListaMesas;
import Negocio.Contenedor.ListaOrdenes;
import Negocio.Contenedor.ListaProductos;
import Negocio.Contenedor.ListaSaloneros;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JOptionPane;


public class Cargador{

    private Connection conn;

    public void conectar() {
        String bd = "dbProyectoIPN";
        String login = "system";
        String password = "";
        String url = "jdbc:mysql://localhost/" + bd;
        conn = null;
        try {
            Class.forName("com.mysql.jdbc.Connection");
            conn = (Connection) DriverManager.getConnection(url, login, password);
            if (conn != null) {
                System.out.println("Conexion a base de datos " + url + " ... Ok");
            }
        } catch (SQLException ex) {
            System.out.println("Hubo un problema al intentar conectarse con la base de datos " + url);
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
        } catch (ClassNotFoundException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
        }
    }//Fin de conectar

    //-----------------------------INICIO DE BAILARINAS-----------------------------//

    public boolean insertarBailarina(String nombreArtistico, int cedula, String nombreReal, int edad, int telefono, String direccion){
        Statement s;
        try {
            s =(Statement) conn.createStatement();
            s.executeUpdate("INSERT INTO dbProyectoIPN.bailarina (nombreArtistico, cedula, nombreReal, edad, telefono, direccion) VALUES"
                + "('" + nombreArtistico+ "','"
                    + cedula + "','" + nombreReal + "','"
                    + edad + "','" + telefono + "','"
                    + direccion + "')");
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }//Fin de insertarBailarina

    public void actualizarLbBailarinas(JList lbBailarinas, JList lsBailarinaOrden, ListaBailarinas listaBailarinas) {
        DefaultListModel modelo = new DefaultListModel();
        for (int i = 0; i < listaBailarinas.size(); i++) {
             modelo.addElement(listaBailarinas.getElemento(i));
        }
        lbBailarinas.setModel(modelo);
        lsBailarinaOrden.setModel(modelo);
    }

    public void cargarArrayBailarinas(ListaBailarinas listaBailarinas){
        Statement s;
        listaBailarinas.reset();
        try {
            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM dbProyectoIPN.bailarina WHERE activo=1");
            while (rs.next()) {
                listaBailarinas.cargar( Integer.parseInt(rs.getObject("idBailarina").toString()), rs.getObject("nombreArtistico").toString(), Integer.parseInt(rs.getObject("cedula").toString()), rs.getObject("nombreReal").toString(), Integer.parseInt(rs.getObject("edad").toString()), Integer.parseInt(rs.getObject("telefono").toString()), rs.getObject("direccion").toString());
            }
            rs.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
        }
    }

    public boolean eliminarBailarina(int idBailarina){
        //NO ELIMINA PROPIAMENTE, SINO QUE DESACTIVA A LA BAILARINA ESPECIFICADA
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.bailarina SET activo=0 WHERE idBailarina="+idBailarina);
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public boolean modificarBailarina(int idBailarina, String nombreArtistico, int cedula, String nombreReal, int edad, int telefono, String direccion){
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.bailarina "
                    + "SET nombreArtistico='"+nombreArtistico+"',"+
                           "cedula='"+cedula+"',"+
                           "nombreReal='"+nombreReal+"',"+
                           "edad='"+edad+"',"+
                           "telefono='"+telefono+"',"+
                           "direccion='"+direccion + "'"+
                    "  WHERE idBailarina="+idBailarina);
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public String[] informacionBailarina(int idBailarina) {
        Statement s;
        String info [] = new String [7];
        try {
            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("Select * FROM dbProyectoIPN.bailarina WHERE idBailarina="+idBailarina);
            while (rs.next()){
            info[0] = rs.getObject("idBailarina").toString();
            info[1] = rs.getObject("nombreArtistico").toString();
            info[2] = rs.getObject("cedula").toString();
            info[3] = rs.getObject("nombreReal").toString();
            info[4] = rs.getObject("edad").toString();
            info[5] = rs.getObject("telefono").toString();
            info[6] = rs.getObject("direccion").toString();
            }
            return info;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return info;
        }
    }

    //-----------------------------FINAL DE BAILARINAS-----------------------------//

    //-----------------------------INICIO DE SALONEROS-----------------------------//

    public boolean insertarSalonero(String nombre, int cedula, int edad, int telefono, String direccion){
        Statement s;
        try {
            s =(Statement) conn.createStatement();
            s.executeUpdate("INSERT INTO dbProyectoIPN.salonero (nombre, cedula, edad, telefono, direccion) VALUES"
                + "('" + nombre+ "','"
                    + cedula + "','" + edad + "','" + telefono + "','"+ direccion + "')");
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public void actualizarLbSaloneros(JList lbSaloneros, JList lsSalonerosOrden, ListaSaloneros listaSaloneros) {
        DefaultListModel modelo = new DefaultListModel();
        for (int i = 0; i < listaSaloneros.size(); i++) {
             modelo.addElement(listaSaloneros.getElemento(i));
        }
        lbSaloneros.setModel(modelo);
        lsSalonerosOrden.setModel(modelo);
    }

    public void cargarArraySaloneros(ListaSaloneros listaSaloneros){
        Statement s;
        listaSaloneros.reset();
        try {
            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM dbProyectoIPN.salonero WHERE activo=1");
            while (rs.next()) {
                listaSaloneros.cargar( Integer.parseInt(rs.getObject("idSalonero").toString()), rs.getObject("nombre").toString(),
                        Integer.parseInt(rs.getObject("cedula").toString()), Integer.parseInt(rs.getObject("edad").toString()),
                        Integer.parseInt(rs.getObject("telefono").toString()), rs.getObject("direccion").toString());
            }
            rs.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
        }
    }

    public boolean eliminarSalonero(int idSalonero){
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.salonero SET activo=0 WHERE idSalonero="+idSalonero);
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public boolean modificarSalonero(int idSalonero, String nombre, int cedula, int edad, int telefono, String direccion){
        Statement s;
        System.out.println("UPDATE dbProyectoIPN.salonero "
                    + "SET nombre='"+nombre+"',"+
                           "cedula='"+cedula+"',"+
                           "edad='"+edad+"',"+
                           "telefono='"+telefono+"',"+
                           "direccion='"+direccion + "'"+
                    "  WHERE idSalonero="+idSalonero);
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.salonero "
                    + "SET nombre='"+nombre+"',"+
                           "cedula='"+cedula+"',"+
                           "edad='"+edad+"',"+
                           "telefono='"+telefono+"',"+
                           "direccion='"+direccion + "'"+
                    "  WHERE idSalonero="+idSalonero);
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public String[] informacionSalonero(int idSalonero) {
        Statement s;
        String info [] = new String [7];
        try {
            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("Select * FROM dbProyectoIPN.salonero WHERE idSalonero="+idSalonero);
            while (rs.next()){
            info[0] = rs.getObject("idSalonero").toString();
            info[1] = rs.getObject("nombre").toString();
            info[2] = rs.getObject("cedula").toString();
            info[3] = rs.getObject("edad").toString();
            info[4] = rs.getObject("telefono").toString();
            info[5] = rs.getObject("direccion").toString();
            }
            return info;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return info;
        }
    }

    //-----------------------------FINAL DE SALONEROS-----------------------------//

    //-----------------------------INICIO DE PRODUCTOS-----------------------------//

    public boolean insertarProducto(String nombre, double costo, double comisionBailarina){
        Statement s;
        try {
            s =(Statement) conn.createStatement();
            s.executeUpdate("INSERT INTO dbProyectoIPN.producto (nombre,costo,comisionBailarina) VALUES"
                + "('" + nombre + "','" + costo + "','" + comisionBailarina + "')");
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public void actualizarLbProductos(JList lbProductos, ListaProductos listaProductos) {
        DefaultListModel modelo = new DefaultListModel();
        for (int i = 0; i < listaProductos.size(); i++) {
             modelo.addElement(listaProductos.getElemento(i));
        }
        lbProductos.setModel(modelo);
    }

    public void cargarArrayProductos(ListaProductos listaProductos){
        Statement s;
        listaProductos.reset();
        try {
            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM dbProyectoIPN.producto");
            while (rs.next()) {
                if(Integer.parseInt(rs.getObject("activo").toString())==1)
                    listaProductos.cargar( Integer.parseInt(rs.getObject("codigo").toString()), rs.getObject("nombre").toString(),Double.parseDouble(rs.getObject("costo").toString()), Double.parseDouble(rs.getObject("comisionBailarina").toString()), 1);
            }
            rs.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
        }
    }

    public boolean eliminarProducto(int codigo){
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.producto SET activo=0 WHERE codigo="+codigo);
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public boolean modificarProducto(int codigo, String nombre, double costo, double comisionBailarina){
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.producto "
                    + "SET nombre='"+nombre+"',"+
                           "costo='"+costo+"',"+
                           "comisionbailarina='"+comisionBailarina+ "'"+
                    "  WHERE codigo="+codigo);
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public String[] informacionProducto(int codigo) {
        Statement s;
        String info [] = new String [4];
        try {
            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("Select * FROM dbProyectoIPN.producto WHERE codigo="+codigo);
            while (rs.next()){
            info[0] = rs.getObject("codigo").toString();
            info[1] = rs.getObject("nombre").toString();
            info[2] = rs.getObject("costo").toString();
            info[3] = rs.getObject("comisionBailarina").toString();
            }
            return info;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return info;
        }
    }

    //-----------------------------FINAL DE PRODUCTOS-----------------------------//

    //-----------------------------INICIO DE MESAS-----------------------------//

    public boolean insertarMesa(int numMesa, int capacidad) {
        Statement s;
        try {
            s =(Statement) conn.createStatement();
            s.executeUpdate("INSERT INTO dbProyectoIPN.mesa (idMesa, capacidad) VALUES"
                + "('"+numMesa+"','" + capacidad + "')");
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public void cargarArrayMesas(ListaMesas listaMesas){
        Statement s;
        listaMesas.reset();
        try {
            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM dbProyectoIPN.mesa");
            while (rs.next()) {
                if (Integer.parseInt(rs.getObject("activa").toString()) == 1) {
                    listaMesas.cargar(Integer.parseInt(rs.getObject("codigoMesa").toString()),
                            Integer.parseInt(rs.getObject("idMesa").toString()),
                            Integer.parseInt(rs.getObject("capacidad").toString()),
                            Integer.parseInt(rs.getObject("activa").toString()));
                }
            }
            rs.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
        }
    }

    public boolean eliminarMesa(int codigoMesa) {

        if(codigoMesa == -1)
            return false;

        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.mesa SET activa=0 WHERE codigoMesa="+codigoMesa);
            return true;
        } catch (SQLException ex) {
            System.out.println("Error: "+ex.getLocalizedMessage());
            return false;
        }
    }

    public void eliminarCuentasActivasMesa(int codigoMesaActiva) {
        if(codigoMesaActiva != -1)
        {
            Statement s;
            try{
                s = (Statement) conn.createStatement();
                System.out.println(codigoMesaActiva);
                s.executeUpdate("DELETE FROM dbProyectoIPN.orden WHERE codMesa ='"+codigoMesaActiva
                                +"'and activa ='"+1+"'");
                s.executeUpdate("DELETE FROM dbProyectoIPN.cuenta WHERE codigoMesa ='"+codigoMesaActiva
                                +"'and fechaCierre ='0000-00-00 00:00:00'");
            }catch(SQLException e)
            {}
        }
    }

    //-----------------------------FINAL DE MESAS-----------------------------//

    //-----------------------------INICIO DE CUENTAS-----------------------------//

    public boolean agregarCuenta(int codigoMesa, int mesa, String nombreCliente, int numeroPersonas) {
        Statement s;
        try {
            s =(Statement) conn.createStatement();
            s.executeUpdate("INSERT INTO dbProyectoIPN.cuenta (codigoMesa, mesa, nombreCliente, fechaCierre, numeroPersonas) VALUES"
                + "('"+codigoMesa+"','"
                + mesa + "','"
                + nombreCliente + "','"
                + "0000-00-00 00:00:00','"
                + numeroPersonas+ "')");
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public void cargarArrayCuentas(ListaCuentas listaCuentas){
        Statement s;
        listaCuentas.reset();
        try {
            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM dbProyectoIPN.cuenta");
            while (rs.next()) {
                if(rs.getObject("fechaCierre").toString().equals("0000-00-00 00:00:00"))
                    listaCuentas.cargar( Integer.parseInt(rs.getObject("idCuenta").toString()),
                                         Integer.parseInt(rs.getObject("codigoMesa").toString()),
                                         Integer.parseInt(rs.getObject("mesa").toString()),
                                         rs.getObject("nombreCliente").toString(),
                                         rs.getObject("fechaCierre").toString(),
                                         Integer.parseInt(rs.getObject("numeroPersonas").toString()));
            }
            rs.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
        }
    }

    public void actualizarLbCuentas(JList lbCuentas, ListaCuentas listaCuentas, int idMesa) {
        DefaultListModel modelo = new DefaultListModel();
        for (int i = 0; i < listaCuentas.size(); i++) {
            if(listaCuentas.agregarIdMesa(i, idMesa))
                modelo.addElement(listaCuentas.getElemento(i));
        }
        lbCuentas.setModel(modelo);
    }
    
    public boolean eliminarCuenta(int idCuenta){
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("DELETE FROM dbProyectoIPN.orden WHERE nCuenta="+idCuenta);

            s = (Statement) conn.createStatement();
            s.executeUpdate("DELETE FROM dbProyectoIPN.cuenta WHERE idCuenta="+idCuenta);
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public String[] informacionCuenta(int idCuenta) {
        Statement s;
        String info [] = new String [5];
        try {
            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("Select * FROM dbProyectoIPN.cuenta WHERE idCuenta="+idCuenta);
            while (rs.next()){
            info[0] = rs.getObject("idCuenta").toString();
            info[1] = rs.getObject("mesa").toString();
            info[2] = rs.getObject("nombreCliente").toString();
            info[3] = rs.getObject("fechaCierre").toString();
            info[4] = rs.getObject("numeroPersonas").toString();
            }
            return info;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return info;
        }
    }

    public boolean modificarCuenta(int idCuenta, int codigoMesa, int mesa, String nombreCliente, int numeroPersonas){
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.cuenta "
                            + "SET mesa='"+mesa+"',"+
                            "codigoMesa='"+codigoMesa+"'"+
                           "nombreCliente='"+nombreCliente+"',"+
                           "numeroPersonas='"+numeroPersonas+ "'"+
                    "  WHERE idCuenta="+idCuenta);
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public void guardarDescuento(int idCuenta, double descuento) {
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.cuenta "
                            + "SET descuento='"+descuento+"' WHERE idCuenta="+idCuenta);
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
        }
    }

    public double cargarDescuento(int idCuenta) {
        Statement s;
        double desc = 0;
        try {
            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("Select * FROM dbProyectoIPN.cuenta WHERE idCuenta="+idCuenta);
            while (rs.next()){
            desc = Double.parseDouble(rs.getObject("descuento").toString());
            }
            return desc;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return 0;
        }
    }

    //-----------------------------FINAL DE CUENTAS-----------------------------//

    //-----------------------------INICIO DE ORDENES-----------------------------//

    public boolean agregarOrden(int nCuenta, int codMesa, int nMesa, int nProducto, int nTipo, int nSalonero, int nBailarina, int activa){
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            if (nBailarina != 0) {
                s.executeUpdate("INSERT INTO dbProyectoIPN.orden (activa, nCuenta, codMesa, nMesa, nProducto, nTipo, nSalonero, nBailarina) VALUES"
                        + "('" + activa + "','"
                        + nCuenta + "','"
                        + codMesa + "','"
                        + nMesa + "','"
                        + nProducto + "','"
                        + nTipo + "','"
                        + nSalonero + "','"
                        + nBailarina + "')");
            } else {
                s.executeUpdate("INSERT INTO dbProyectoIPN.orden (activa, nCuenta, codMesa, nMesa, nProducto, nTipo, nSalonero, nBailarina) VALUES"
                        + "('" + activa + "','"
                        + nCuenta + "','"
                        + codMesa+ "','"
                        + nMesa + "','"
                        + nProducto + "','"
                        + nTipo + "','"
                        + nSalonero + "',"
                        + null + ")");
            }
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public boolean eliminarOrden(int nOrden){
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("DELETE FROM dbProyectoIPN.orden WHERE idOrden="+nOrden);
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public void cargarArrayOrdenes(ListaOrdenes listaOrdenes, int idCuenta){
        Statement s;
        listaOrdenes.reset();
        try {
            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM dbProyectoIPN.orden");
            while (rs.next()) {
                if(Integer.parseInt(rs.getObject("nCuenta").toString()) == idCuenta){
                if(Integer.parseInt(rs.getObject("activa").toString()) == 1)
                    if(rs.getObject("nBailarina") == null){
                        listaOrdenes.cargar(
                            Integer.parseInt(rs.getObject("idOrden").toString()),
                            Integer.parseInt(rs.getObject("nCuenta").toString()),
                            Integer.parseInt(rs.getObject("codMesa").toString()),
                            Integer.parseInt(rs.getObject("nMesa").toString()),
                            Integer.parseInt(rs.getObject("nProducto").toString()),
                            Integer.parseInt(rs.getObject("nTipo").toString()),
                            Integer.parseInt(rs.getObject("nSalonero").toString()),
                            0);
                    }else{
                    listaOrdenes.cargar( 
                            Integer.parseInt(rs.getObject("idOrden").toString()),
                            Integer.parseInt(rs.getObject("nCuenta").toString()),
                            Integer.parseInt(rs.getObject("codMesa").toString()),
                            Integer.parseInt(rs.getObject("nMesa").toString()),
                            Integer.parseInt(rs.getObject("nProducto").toString()),
                            Integer.parseInt(rs.getObject("nTipo").toString()),
                            Integer.parseInt(rs.getObject("nSalonero").toString()),
                            Integer.parseInt(rs.getObject("nBailarina").toString()));
                    }
            }
            }
            rs.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
        }
    }

    public boolean transferirCuenta(int codMesaNueva, int numMesaNueva, int idCuenta) {
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.orden "
                    + "SET nMesa="+null+","+
                    "codMesa="+null+""+
                    "  WHERE nCuenta="+idCuenta);
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.cuenta "
                    + "SET mesa='"+numMesaNueva+"',"+
                    "codMesa='"+codMesaNueva+"'"+
                    "  WHERE idCuenta="+idCuenta);
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.orden "
                    + "SET nMesa='"+numMesaNueva+"',"+
                    "codMesa='"+codMesaNueva+"'"+
                    "  WHERE nCuenta="+idCuenta);
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public boolean facturar(int nCuentaFacturar, String fechaCierre) {
        Statement s;
        try {
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.orden "
                    + "SET activa='"+0+"'"+
                    "  WHERE nCuenta="+nCuentaFacturar);
            s = (Statement) conn.createStatement();
            s.executeUpdate("UPDATE dbProyectoIPN.cuenta "
                    + "SET fechaCierre='"+fechaCierre+"'"+
                    "  WHERE idCuenta="+nCuentaFacturar);
            return true;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    public void cargarOrdenesDia(ListaOrdenes listaOrdenes, String fechaCierre) {
        Statement s;
        listaOrdenes.reset();
        try {
            String dia = fechaCierre.substring(8, 10);
            System.out.println(dia);
            String mes = fechaCierre.substring(5, 7);
            System.out.println(mes);
            String año = fechaCierre.substring(0, 4);
            System.out.println(año);
            int diaMenosUno = Integer.parseInt(dia)-1;
            String diaMenos = "";
            if(diaMenosUno == 0)
            {
                int numMes = Integer.parseInt(mes);
                switch(numMes){
                    case 1:
                    case 2:
                    case 4:
                    case 6:
                    case 8:
                    case 9:
                    case 11:
                        diaMenosUno = 31;
                        break;
                    case 3:
                        if(Integer.parseInt(año)%4 ==0)
                            diaMenosUno = 29;
                        else
                            diaMenosUno = 28;
                        break;
                    case 5:
                    case 7:
                    case 10:
                    case 12:
                        diaMenosUno = 30;
                        break;
                }
            }

            diaMenos = ""+diaMenosUno;

            s = (Statement) conn.createStatement();
            ResultSet rs = s.executeQuery("Select * from orden o join cuenta c "
            + "where c.idcuenta=o.ncuenta and fechaCierre != '0000-00-00 00:00:00' ");
            while (rs.next()) {
                if(rs.getObject("fechaCierre").toString().substring(5, 7).equals(mes) &&
                   rs.getObject("fechaCierre").toString().substring(0, 4).equals(año) &&
                   (rs.getObject("fechaCierre").toString().substring(8, 10).equals(dia) ||
                    ((rs.getObject("fechaCierre").toString().substring(8, 10).equals(diaMenos)
                    && Integer.parseInt(rs.getObject("fechaCierre").toString().substring(11, 13)) >= 12)))){
                if(Integer.parseInt(rs.getObject("activa").toString()) == 0)
                    if(rs.getObject("nBailarina") == null){
                        listaOrdenes.cargar(
                            Integer.parseInt(rs.getObject("idOrden").toString()),
                            Integer.parseInt(rs.getObject("nCuenta").toString()),
                            Integer.parseInt(rs.getObject("codMesa").toString()),
                            Integer.parseInt(rs.getObject("nMesa").toString()),
                            Integer.parseInt(rs.getObject("nProducto").toString()),
                            Integer.parseInt(rs.getObject("nTipo").toString()),
                            Integer.parseInt(rs.getObject("nSalonero").toString()),
                            0);
                    }else{
                    listaOrdenes.cargar(
                            Integer.parseInt(rs.getObject("idOrden").toString()),
                            Integer.parseInt(rs.getObject("nCuenta").toString()),
                            Integer.parseInt(rs.getObject("codMesa").toString()),
                            Integer.parseInt(rs.getObject("nMesa").toString()),
                            Integer.parseInt(rs.getObject("nProducto").toString()),
                            Integer.parseInt(rs.getObject("nTipo").toString()),
                            Integer.parseInt(rs.getObject("nSalonero").toString()),
                            Integer.parseInt(rs.getObject("nBailarina").toString()));
                    }
            }
            }
            rs.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error: "+ex.getLocalizedMessage(), "", JOptionPane.ERROR_MESSAGE);
        }
    }

    //-----------------------------FINAL DE ORDENES-----------------------------//

//-----------------------------INICIO DE REPORTES-----------------------------//
    public ResultSet getReportFichas()
    {
        Statement s;
        ResultSet retSet = null;
        try
        {
           s =(Statement) conn.createStatement();
           retSet = s.executeQuery("Select BID, nombreArtistico, (CONCAT('Â¢', FORMAT(comision, 2))) as Comision, fichas from bailarina join "+
                   "(Select (nBailarina) as BID, comision, fichas from orden join( "+
        "Select (o.nProducto) as PID, (SUM(p.comisionBailarina)) comision, count(o.nTipo) as fichas "+
            "FROM orden o "+
            "JOIN producto p "+
            "on o.nProducto = p.codigo "+
            "where nTipo = 3 "+
            "group by p.nombre "+
        ") as T1 where nProducto = PID and nBailarina is not null "+
    ") AS T2 where idBailarina = BID "+
    "group by nombreArtistico ");

        }catch(SQLException e)
        {
            System.out.println(e.getMessage()+"\n");
        }
        return retSet;
    }
    public ResultSet getReportComision()
    {
        Statement s;
        ResultSet retSet = null;
        try
        {
            s =(Statement) conn.createStatement();
            retSet = s.executeQuery("Select SUM(totalVenta) as Total_Ventas, (SUM(totalVenta) * 0.1) as Comision from "+
    "(Select nombre, totalVenta from producto join "+
        "(Select (o.nProducto) as PID, (sum(p.costo)) as totalVenta "+
            "FROM orden o "+
            "JOIN producto p "+
            "on o.nProducto = p.codigo "+
            "group by (p.nombre) "+
        ")as T1 where codigo = PID "+
    ") as t2 ");

        }catch(SQLException e)
        {
             System.out.println(e.getMessage()+"\n");
        }
        return retSet;
    }
    public ResultSet getReportVentas()
    {
        Statement s;
        ResultSet retSet = null;
        try
        {
            s =(Statement) conn.createStatement();
            retSet = s.executeQuery("Select nombre, CONCAT('Â¢', FORMAT(totalVenta, 2)) as Total from producto join "+
        "(Select (o.nProducto) as PID, (sum(p.costo)) as totalVenta "+
            "FROM orden o "+
            "JOIN producto p "+
            "on o.nProducto = p.codigo "+
            "group by (p.nombre) "+
        ")as T1 where codigo = PID ");

        }catch(SQLException e)
        {
          System.out.println(e.getMessage()+"\n");
        }
        return retSet;
    }

    //-----------------------------FIN DE REPORTES-----------------------------//



}
